iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 7
0

(部分還未完成)

昨天我們已經介紹過 Logistic Regression 的模型已經成本函數,接下來就用 python 來實現一下吧!

詳細的過程可以到 notebook 參考。這次的實驗是將歷史信用卡發放資料(當然是假資料)當作訓練集,來預測之後如果有新年齡和薪水資料,判斷是否要審核信用卡發放。

1. 觀察資料

day7-data

x 軸為年齡,y 軸為薪水,+ 代表審核通過,而 - 代表不通過。我們希望找到一條線把這兩個區間分開。

2. 開始訓練模型

def normalize(input):
    mean = np.mean(input, axis=0)
    return (input - mean) / mean

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

def predict(x, weights):
    return sigmoid(x.dot(weights))

def gradient(X, weights, Y):
    g = np.zeros(2)
    m = len(X)

    i = 0
    for x in X:
        prediction = sigmoid(weights.dot(x))
        g += (prediction - Y[i]) * x
        i += 1
    return g / m


def gradient_descent(X, Y, alpha, step):
    weights = np.ones(2)
    print(X, Y)
    for i in range(0, step):
        weights = weights - (alpha * gradient(X, weights, Y))
    return weights

mean = np.mean(train_data, axis=0)

nor_train_data = normalize(train_data)
w = gradient_descent(nor_train_data, train_label, 1, 1000)

結論

在預測與分類上,線性迴歸與邏輯回歸都是相當簡單且有效的工具,有時候並不需要很強大的神經網路才能夠精準判斷資料,在特徵不多,資料量不大的情況下,使用線性迴歸與邏輯回歸是個快速且精準的選擇之一。


上一篇
[Day6] Logistic Regression — 邏輯迴歸
下一篇
[Day8] 如何正確訓練 Model
系列文
Machine Learning 與 Deep Learning 筆記10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言